<?php

/**
 * Institucion Bancaria
 * @Banco
 * GenProg Lenguaje de Modelos
 *
 *
 * @author      Carlos Peña <crash.madover@gmail.com>
 * @package     application.model.sis.nomina
 * @copyright   (c) 2013, GenProg
 * @version     v 1.0
 */
class Guia {
    // -------------------------------------------------------------------------------------

    /**
     * Prefijo de los Campos
     *
     * @access    public
     * @var       string
     */
    public $prefijo = 'GUI';

    // -------------------------------------------------------------------------------------

    /**
     * Nombre de la Tabla en la Base de Datos
     *
     * @access    public
     * @var       string
     */
    public $tabla = 'K_TGuia';
    // -------------------------------------------------------------------------------------

    public $estatus = array('0' => 'Activa', '1' => 'Anuladas');
    public $forma = array('0' => 'Por Oficina', '2' => 'Ventas Por Lote');

    // -------------------------------------------------------------------------------------

    /**
     * Campos del Sistema y Base de datos
     *
     * @access    public
     * @var       array()
     */
    public $struc = array(//
        'cmp' => array(//
            'oid' => array('clave' => 'PRIMARY', 'tipo' => 'INT', 'longitud' => '11', 'incremento' => 1,
                'comentario' => 'Identificador', 'visible' => 'oculto'), //
            'oidFKR' => array('tipo' => 'INT', 'longitud' => '11', 'comentario' => 'Identificador Responsable', 'combo' => 'estatus'), //
            'control' => array('tipo' => 'VARCHAR', 'comentario' => 'Control de la Guia', 'longitud' => '64', 'accion' => 'consulta'), //
            'estatus' => array('tipo' => 'INT', 'longitud' => '1', 'comentario' => 'Estatus de La Guia', 'combo' => 'estatus'), //
            'forma' => array('tipo' => 'INT', 'longitud' => '1', 'comentario' => 'Forma (CO, COD, VPL...)', 'combo' => 'forma'),
            'fecha' => array('tipo' => 'DATE', 'comentario' => 'Fecha de Creacion')
        ), 'join' => array(
            'responsable' => array('oid' => 'oidFKR', 'relacion' => 'cero-a-uno', 'dtd' => 'Responsable')
    ));

    // -------------------------------------------------------------------------------------

    /**
     * Descripcion del modelo
     * 
     * @access    public
     * @var       string
     */
    public $dtd = 'Guia';

    // -------------------------------------------------------------------------------------

    /**
     * Permite crear botones asignados a la Interfaz
     * C = Crear, R = Leer (Buscar), U = Actualizar (Modificar), D = Eliminar
     *
     * @access public
     * @var string
     */
    public $botones = 'CRUD';

    // -------------------------------------------------------------------------------------

    /**
     * Comparar Objetos y Mapearlo
     * 
     * @param Orm $orm
     * @param type $arr
     */
    function Mapear(Orm $orm = null, $arr = array()) {
        $iMin = $arr['desde'];
        $iMax = $arr['hasta'] + 1;
        $cmp = $this->prefijo . '_oid,' . $this->prefijo . '_oidFKR,' . $this->prefijo . '_control,' . $this->prefijo . '_estatus,' . $this->prefijo . '_forma,' . $this->prefijo . '_fecha';
        $oid = $arr['oid'];
        if ($arr['oid'] == '' && $arr['ced_rif'] == '') {
            $oid = 0;
        } else {
            $aObjeto = array(//
                'RES_oid' => $arr['oid'], //
                'RES_ced_rif' => $arr['ced_rif'], //
                'RES_nombre_razon' => $arr['nombre_razon'], //
                'RES_tipo' => $arr['tipo'] //
            );
            $orm->GPQL()->SalvarOActualizar($aObjeto, true)->Comitear();
            if ($arr['oid'] == '') {
                $rs = $orm->GPQL('Responsable')
                        ->Asignar_Columnas('Responsable.oid AS oid')
                        ->Donde_Columnas('Responsable.ced_rif like \'%' . $arr['ced_rif'] . '%\'')
                        ->Listar_Todo()
                        ->Ejecutar();
                foreach ($rs['rs'] as $sV) {
                    $oid = $sV->oid;
                }
            }
        }
        $sConsulta = 'INSERT IGNORE INTO ' . $this->tabla . ' (' . $cmp . ') VALUES ';
        for ($i = $iMin; $i < $iMax; $i++) {

            $sConsulta .= "('','" . $oid . "','" . $i . "','" . $arr['estatus'] . "','" . $arr['forma'] . "','" . $arr['fecha'] . "')";
            if ($i != $iMax - 1) {
                $sConsulta .= ',';
            }
        }
        //echo $sConsulta;
        $orm->GPQL()->Ejecutar($sConsulta, TRUE);
        echo "Proceso Exitoso...";
    }

    // -------------------------------------------------------------------------------------

    /**
     * Generar Interfaz grafica de Usuario
     * 
     * @return Object
     */
    public function GUI() {
        $frm[1] = array('etiqueta' => 'Desde', 'id' => 'desde', 'tipo' => 'numero', 'clase' => 'icon1', 'requerido' => 1, 'estilo' => 'width:210px');
        $frm[2] = array('etiqueta' => 'Hasta', 'id' => 'hasta', 'tipo' => 'numero', 'clase' => 'icon1', 'requerido' => 1, 'estilo' => 'width:300px');
        $frm[3] = array('etiqueta' => 'Estatus', 'id' => 'estatus', 'tipo' => 'combo', 'elementos' => $this->estatus, 'estilo' => 'width:210px');
        $frm[4] = array('etiqueta' => 'Fecha de Creacion', 'id' => 'fecha', 'tipo' => 'calendario');
        $frm[5] = array('etiqueta' => 'Forma', 'id' => 'forma', 'tipo' => 'combo', 'elementos' => $this->forma, 'onchange' => 'Seleccionar(this)', 'estilo' => 'width:210px');
        $obj['php'] = array('campos' => $frm, 'titulo' => 'Registrar Guias');
        $obj['json'] = json_encode($obj['php']);
        return (object) $obj;
    }

    /**
     * Envios Diarios
     */
    function GGrid(Orm $orm = null, $arr = array()) {
        $i = 0;
        $oCab = array();
        $oFil = array();
        $oCab[1] = array("titulo" => "oid_paquete", "atributos" => "width:60px", "oculto" => 1);
        $oCab[2] = array("titulo" => "oid_envia", "atributos" => "width:60px", "oculto" => 1);
        $oCab[3] = array("titulo" => "oid_recibe", "atributos" => "width:60px", "oculto" => 1);
        $oCab[4] = array("titulo" => "oid_oficina", "atributos" => "width:60px", "oculto" => 1);
        $oCab[5] = array("titulo" => "Guia", "atributos" => "width:100px");
        $oCab[6] = array("titulo" => "Envia", "atributos" => "width:160px");
        $oCab[7] = array("titulo" => "Recibe", "atributos" => "width:160px");
        $oCab[8] = array("titulo" => "Oficina", "atributos" => "width:160px", "oculto" => 1);
        $oCab[9] = array("titulo" => "Ciudad", "atributos" => "width:160px");

        $oCab[10] = array("titulo" => "Peso", "atributos" => "width:60px");
        $oCab[11] = array("titulo" => "Base Imponible", "atributos" => "width:60px");
        $oCab[12] = array("titulo" => "Franqueo", "atributos" => "width:60px");
        $oCab[13] = array("titulo" => "I.V.A", "atributos" => "width:60px");
        $oCab[14] = array("titulo" => "Monto Total", "atributos" => "width:60px");
        $oCab[15] = array("titulo" => "Tipo Servicio", "atributos" => "width: 60px");
        
        
        $oCab[16] = array(//
        		'titulo' => "#",
        		'mantiene' => 1, // Que la fila no se elimine
        		'tipo' => 'enlace', //Ruta Imagen
        		'parametro' => '5',
        		'metodo' => 2,
        		'taget' => '_blank',
        		'ruta' => IMG . 'aceptar.png',
        		'funcion' => 'GUI/Contado',
        		"atributos" => "width:20px"
        );

        $oCab[17] = array(//
            'titulo' => '#',
            'mantiene' => 1, // Que la fila no se elimine
            'tipo' => 'bimagen', //Ruta Imagen
            'metodo' => 2,
            'parametro' => '18',
            'ruta' => IMG . 'cancelar.png',
            'funcion' => 'Anular_Envia_Recibe',
            'atributos' => "width:8px"
        );
        $oCab[18] = array("titulo" => "OID_GUIA", "atributos" => "width:60px", "oculto" => 1);


        
        if (isset($orm)) {
            $rs = $orm->GPQL('Envia_Recibe')->Donde_Columnas("PAQ_oidFKG LIKE '%" . $arr['id'] . "%'  GROUP BY PAQ_oid")->Listar_Donde()->Ejecutar();
            foreach ($rs['rs'] as $sC => $sV) {
                $arr = null;
                $arr['GUI_control'] = $sV->PAQ_oidFKG;
                $Guia = $orm->GPQL()->ObtenerID($arr, FALSE, FALSE);
                $guia_con = '';
                if (isset($Guia->control)) {
                    $guia_con = $Guia->control;
                    $guia_oid = $Guia->oid;
                }
                $eti_a =  '';
                $eti_c = '';
                if($Guia->estatus == 3){
                	$eti_a =   '<font color=red>';
                	$eti_c = '</font>';
                }
                $arr = null;
                $orm->GPQL()->Limpiar_Cache();
                $arr['RES_oid'] = $sV->CER_oidFKR;
                $Recibe = $orm->GPQL()->ObtenerID($arr, FALSE, FALSE);
                $rec_nom = '';
                $rec_ciu = '';
                if (isset($Recibe->nombre_razon)) {
                    $rec_nom = $Recibe->nombre_razon;
                }


                // --------------------------------------------------------------------------
                $arr = null;
                $orm->GPQL()->Limpiar_Cache();
                $arr['OFI_oid'] = $sV->PAQ_oidFKO;
                $Oficina = $orm->GPQL()->ObtenerID($arr, FALSE, FALSE);
                $arr = null;
                $orm->GPQL()->Limpiar_Cache();
                $ofi_nom = '';
                $ofi_ciu = '';
                if (isset($Oficina->nombre_razon)) {
                    $ofi_nom = $Oficina->nombre_razon;
                    $ofi_ciu = $Oficina->Ciudad->nomb;
                }





                if ($sV->CIU_oid != '') {
                    // --------------------------------------------------------------------------
                    $arr = null;
                    $orm->GPQL()->Limpiar_Cache();
                    $arr['CIU_oid'] = $sV->CIU_oid;
                    $Ciudad = $orm->GPQL()->ObtenerID($arr, FALSE, FALSE);
                    $arr = null;
                    $orm->GPQL()->Limpiar_Cache();
                    $ciu_nom = '';
                    if (isset($Ciudad->nomb)) {
                        $ciu_nom = $Ciudad->nomb;
                    }
                    $oFil[++$i] = array(//
                        '1' => $sV->PAQ_oid,
                        '2' => $sV->CER_oidFKE,
                        '3' => $sV->CER_oidFKR,
                        '4' => $sV->PAQ_oidFKO,
                        '5' => $eti_a . $guia_con . $eti_c,
                        '6' => $sV->RES_nombre_razon,
                        '7' => $rec_nom,
                        '8' => $ofi_nom,
                        '9' => $ciu_nom,
                        '10' => $sV->PAQ_peso,
                        '11' => $sV->PAQ_base,
                        '12' => $sV->PAQ_fran,
                        '13' => $sV->PAQ_iva,
                        '14' => $sV->PAQ_monto,
                        '15' => $sV->SER_nomb,
                    	'16' => '',
                        '17' => '',
                        '18' => $sV->PAQ_oidFKG
                    );
                }
            }
        }

        $contratos = array("Cabezera" => $oCab, "Cuerpo" => $oFil, "Origen" => "json", "titulo" => "Consultar Guia");
        return json_encode($contratos);
    }

    function LGuias(Orm $orm = null, $arr = array()) {
        $i = 0;
        $oCab = array();
        $oFil = array();
        $oCab[1] = array("titulo" => "oid_guia", "atributos" => "width:60px", "oculto" => 1);
        $oCab[2] = array("titulo" => "oid_responsable", "atributos" => "width:60px", "oculto" => 1);
        $oCab[3] = array("titulo" => "Guia", "atributos" => "width:100px");
        $oCab[4] = array("titulo" => "Estatus", "atributos" => "width:160px");
        $oCab[5] = array("titulo" => "Responsable", "atributos" => "width:160px");
        if (isset($orm)) {
            $rs = $orm->GPQL('Guia')->Donde_Columnas("GUI_fecha BETWEEN '" . $arr['desde'] . "' AND '" . $arr['hasta'] . "' ")->Listar_Donde()->Ejecutar();
            foreach ($rs['rs'] as $sC => $sV) {
                $oFil[++$i] = array(//
                    '1' => $sV->GUI_oid,
                    '2' => $sV->GUI_oidFKR, // Responsable
                    '3' => $sV->GUI_control,
                    '4' => $sV->GUI_estatus,
                    '5' => $sV->RES_nombre_razon,
                );
            }
        }
        
        $contratos = array("Cabezera" => $oCab, "Cuerpo" => $oFil, "Origen" => "json", "titulo" => "Listar Guia");
        return json_encode($contratos);
    }

}

?>
